package solution.T0302_1_News;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *  题目：新闻订阅系统
 *  需求说明：
 *  1. 设计一个新闻订阅系统，实现新闻频道（主题）和用户（观察者）之间的订阅与推送机制。
 *  2. 新闻频道可以有多个（如“科技新闻”“体育新闻”），支持订阅、取消订阅和发布新文章。
 *  3. 订阅者可以订阅多个新闻频道，并在订阅的频道发布新文章时收到推送通知。
 *  4. 文章包含标题和内容，发布后，订阅者只能获取推送的文章标题，需要主动向平台获取全文内容。
 *  5. 新闻平台管理所有新闻频道，并存储所有发布的文章，允许用户查询完整的文章内容。
 */

// 新闻平台，管理所有新闻频道和文章
class NewsPlatform {
    private Map<String, NewsChannel> channels = new HashMap<>();
    private Map<String, Article> articles = new HashMap<>();

    public void addChannel(NewsChannel channel) {
        channels.put(channel.getName(), channel);
    }

    public NewsChannel getChannel(String name) {
        return channels.get(name);
    }

    public void storeArticle(Article article) {
        articles.put(article.getTitle(), article);
    }

    public Article getArticle(String title) {
        return articles.get(title);
    }

    public List<String> getAllArticleTitles() {
        return new ArrayList<>(articles.keySet());
    }
}
